<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

// indexOf函数
// 在数组中查找某个元素的下标，如果这个元素存在，返回这个元素的下标 查找不到返回-1
// 参数一：查找什么元素 参数二：从什么位置开始查找



// 构造indexOf函数：

function array_indexOf(arr,item,formIndex){
          if(formIndex===undefined) formIndex=0;
          for(var i=formIndex;i<arr.length;i++){
              if(arr[i]===item) return i;
          }
          return -1;
      }

      console.log(array_indexOf(arr,2,2))






// lastIndexOf函数：
// 在数组中查找某个元素的下标，如果这个元素存在，返回这个元素的下标 查找不到返回-1

// 第一个参数：往反方向查找的元素
// 第二个参数：定义数组的长度



    // function array_lastIndexOf(arr,item,formIndex){
    //       if(formIndex===undefined) formIndex=arr.length;
    //       while(formIndex>=0){
    //           if(arr[formIndex]===item) return formIndex;
    //           formIndex--;
    //       }
    //       return -1;
    //     }

    //   var index=array_lastIndexOf(arr,2,4);
    //   console.log(index);
// 1-判断formIndex不存在时，查询的就是整个数组的长度
// 2-判断当索引长度大于0时，利用下标递减，对比所查找的元素和定义数组内的元素是否相同，
// 相同则返回下标
// 3-当索引长度不是大于等于0时，返回-1





    // var arr=[
    //       {a:1},
    //       {b:2},
    //       {c:3}
    //   ]

    //   var index=arr.indexOf({b:2});
    //   console.log(index);

// 输出结果为-1  因为b:2是两个不同的引用对象，后边的b:2是新建的引用对象
    // 只要是花括号的都是新建对象
    
    // var index=lis.indexOf(this);
    // 这里的this不是新建的对象
    
    
    
    
    
    
    
    
    
    
    
    
    </script>
</body>
</html>